\section{任务一}

在任务一中，我们发现，爬虫的质量（包括网络的质量）会较大影响到结果的正确性。下面除了每项学者的信息外，我们也会单独谈一下爬虫的问题。
\subsection{主页 Homepage}
在判断主页上，综合比较各种算法之后，我们选择了xgboost来做二分类。  
对于首页搜索结果的每条记录提取特征后进行是否是主页的分类，其中判断为主页概率最高的记录会被选择为学者的主页。  
在具体实现上，由于正负样本的不均衡（9：1），对负样本进行负采样可以使结果有较大的提升。
特征方面我们主要使用了如下特征：
\begin{itemize}
\item 网站在搜索结果中的排名
\item 学者所在机构是否是大学/学校
\item 该条搜索结果中是否包含引用信息
\item 搜索结果标题/摘要以及学者所在机构的文本长度
\item url中是否包含给定关键词，包括\emph{edu},\emph{org},\emph{gov},\emph{linkedin}
\item 搜索结果摘要中是否包含\emph{mail},\emph{address}
\item 搜索结果的标题/摘要中的学者名字得分。 这里我们将学者名字分词为$n$份，如果其中$m$份在文本中出现，那么名字得分就是$m/n$，同时，若名字缩写在文本中出现，得分加0.2分。  
\end{itemize}
在如上处理后，我们在训练集和测试集上都能取得0.7左右的准确率，考虑到数据噪音以及搜索结果中多个正确主页的存在，真实准确率估计为0.8左右。
\subsection{性别 Gender}
性别上面我们主要通过学者的名字来判断。我们用8000个名字训练了一个朴素贝叶斯分类器，其中的用到的特征是名字后2位到后7位字母，前2位字母以及名字长度。如果学者名字长度不足的，用空格填满。  
结果上能取得接近0.9的准确率，但是发现对中国人的拼音名字的判断准确较低。  
\subsection{邮件 Email}
邮件识别方面，我们主要通过正则表达式来识别。在看了许多数据后，我们写了一个非常复杂的正则表达式，虽然运行速度较慢，但是基本上能够识别出80\%多的电子邮箱（如果网页中有的话）。为了处理网页中非该学者的电子邮箱，如机构的联系邮箱，院校的邮箱等等，我们采用了关键词过滤。
针对邮件是以图片方式存在的情况，我们也用关键词过滤出了可能的邮件图片，如果文本中没有检测到邮件地址，我们就将该图片url设为邮件信息。
\subsection{照片 Pic}
照片处理中，我们使用正则表达式将网页中所有可能图片地址（首先用关键词过滤到无用图片）提取出来并下载。然后用tensorflow构建了一个人脸识别器，将其中包含且只包含一张人脸的照片作为学者的照片。  
\subsection{职位职称 Position}
这里基本上都是使用的关键词包含来处理，如果文本中出现了职位职称表中职位，我们就认为他拥有该职称。在实现上我们做了一些过滤，例如检测职称附近是否有学者名字，该职称是否已经过时，职称附近有没有正向关键词出现等等。  
\subsection{国家 Location}
此处要求提取的位置信息只有国家，所以我们可以认为该信息只会存在在一行文本中。对于每行文本，如果文本包含国家的信息，我们会依据其包含关键词的情况来给分，如果分数超过阈值，则判定为结果。主要关键词有\emph{mail, address, phone, tel, fax, room, office, road, street, avenue}以及学者姓名。  
\subsection{爬虫}
由于学者网站服务器质量良莠不齐，在采集信息时常常会遇到采集不到的情况。为了在决赛的24小时内尽快采集完信息供之后应用，我们写了并行化的爬虫，并通过各类手段进行网络加速。对于有蜜罐陷阱和脚本内容的网站，使用无头浏览器模拟用于访问来获取信息。